/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package clases_test;

import clases.Bebida;
import clases.Nacionalidad;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author Miguel_
 */
public class testBebida {
    
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("recetasUnit");
    EntityManager em;
    Bebida be1;
    Bebida be2;
    Bebida be3;
    
    Nacionalidad na1;
    Nacionalidad na2;
    Nacionalidad na3;
    
    public testBebida(){}
    
    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Before
    public void setUp() {
        em = emf.createEntityManager();
        em.setFlushMode(FlushModeType.AUTO);
        
        na1 = createNacionalidad("Espania");
        na2 = createNacionalidad("Francia");
        na3 = createNacionalidad("Japon");
     
        be1 = createBebida("Louis Roederer cristal cuvee",na2); 
        be2 = createBebida("Torre Julia reserva 2002",na1);  
        be3 = createBebida("Vega Sicilia reserva 1999",na1); 
    }

    @After
    public void tearDown() {
        em.close();
    }
    
    private Nacionalidad createNacionalidad(String n){
        Nacionalidad na = new Nacionalidad();
        na.setNombre(n);
        return na;
    }
    
    private Bebida createBebida(String n, Nacionalidad na)
    {
        Bebida b = new Bebida();
        b.setNombre(n);
        b.setNacionalidad(na);
        return b;
    }
    
    
    @Test
    public void persistBebida() {
        em.getTransaction().begin();
        
        // Insertamos los distintos objetos Tipo
        em.persist(be1);
        em.persist(be2);
        em.persist(be3);
        
        assertTrue("Bebida "+be1.getNombre()+" "+be1.getNacionalidad()+" inserted?",be1.getNacionalidad().getId()>0);
        assertTrue("Bebida "+be2.getNombre()+" "+be2.getNacionalidad()+" inserted?",be2.getNacionalidad().getId()>0);
        assertTrue("Bebida "+be3.getNombre()+" "+be3.getNacionalidad()+" inserted?",be3.getNacionalidad().getId()>0);
        
        assertEquals("Receta "+be1.getNombre()+" (ID "+be1.getId()+") inserted!.",
                be1.getId(), 1);
        
        em.getTransaction().commit();
     
    } 
    
   
    
    
}
